Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

core/ui/src/commonMain/kotlin/org/meshtastic/core/ui/theme/EventFonts.kt 2d20cd8a4708e2ef66e98d5259f3a97ec93f240a (2d20cd8a) Text, 4.58 KB

T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.ui.theme

Tff7b72import T7ee787androidx.compose.material3.Typography
Tff7b72import T7ee787androidx.compose.runtime.compositionLocalOf
Tff7b72import T7ee787androidx.compose.ui.graphics.Color
Tff7b72import T7ee787androidx.compose.ui.text.TextStyle
Tff7b72import T7ee787androidx.compose.ui.text.font.FontFamily
Tff7b72import T7ee787org.meshtastic.core.model.EventFirmwareFonts

T8b949e/**
* Resolved heading/body typefaces for an active event edition. Either component may be `null` (fall back to default).
*/
Tff7b72data Tff7b72class T56d364EventFontsTb4b4b4(Tff7b72val Te6edf3headingTb4b4b4: Te6edf3FontFamily? Tff7b72= Tff7b72nullTb4b4b4, Tff7b72val Te6edf3bodyTb4b4b4: Te6edf3FontFamily? Tff7b72= Tff7b72nullTb4b4b4)

T8b949e/**
* The ambient event branding to apply **app-wide** — a subtle [accent] wash, the event [palette], and/or the event
* [fonts]. Populated at the composition root only when a device is on event firmware and the user hasn't opted out via
* [LocalEventThemeToggle]; `null` everywhere else. [AppTheme] reads [fonts] to swap [AppTypography]; the app bar reads
* [accent] for its wash and [palette] for its brand rule. The event info sheet and branding icon are driven separately
* by [LocalEventBranding][org.meshtastic.core.ui.util.LocalEventBranding] so they stay available even when opted out.
*
* @param accent the edition's primary — calm enough to sit behind title text as a low-alpha wash.
* @param highlight the edition's loud detail color, for small marks that need to pop rather than recede.
* @param palette every brand color the edition publishes, in authored order; empty when it publishes none.
*/
Tff7b72data Tff7b72class T56d364EventThemeTb4b4b4(
Tff7b72val Te6edf3accentTb4b4b4: Te6edf3Color? Tff7b72= Tff7b72nullTb4b4b4,
Tff7b72val Te6edf3highlightTb4b4b4: Te6edf3Color? Tff7b72= Tff7b72nullTb4b4b4,
Tff7b72val Te6edf3paletteTb4b4b4: Te6edf3ListTff7b72<Te6edf3ColorTff7b72> Tff7b72= Te6edf3emptyListTb4b4b4(Tb4b4b4)Tb4b4b4,
Tff7b72val Te6edf3fontsTb4b4b4: Te6edf3EventFonts? Tff7b72= Tff7b72nullTb4b4b4,
Tb4b4b4)

T8b949e/**
* Resolves an edition's [EventFirmwareFonts] (Google Font *family names*, e.g. `Lato`) into loadable [FontFamily]s.
*
* The default binding returns `null` (no custom fonts). The **Google** flavor binds a downloadable-fonts
* implementation; **F-Droid** keeps the null default (no Play font provider). Resolved via Koin and applied at the app
* theme via [LocalEventTheme].
*/
Tff7b72fun Tff7b72interface T56d364EventFontResolver Tb4b4b4{
Tff7b72fun Td2a8ffresolveTb4b4b4(Te6edf3fontsTb4b4b4: Te6edf3EventFirmwareFonts?Tb4b4b4)Tb4b4b4: Te6edf3EventFonts?
Tb4b4b4}

T8b949e/** The applied ambient event theme, or `null` for the default look. See [EventTheme]. */
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffCompositionLocalAllowlistTa5d6ff"Tb4b4b4)
Tff7b72val Te6edf3LocalEventTheme Tff7b72= Te6edf3compositionLocalOfTff7b72<Te6edf3EventTheme?Tff7b72> Tb4b4b4{ Tff7b72null Tb4b4b4}

T8b949e/**
* Sheet-level opt-out for the ambient event theme (accent wash + fonts). Shown whenever the event info sheet is open
* (which only happens for an active event, and every event carries an accent), so no availability gating is needed.
*/
Tff7b72data Tff7b72class T56d364EventThemeToggleTb4b4b4(Tff7b72val Te6edf3enabledTb4b4b4: Tffa657Boolean Tff7b72= Tff7b72trueTb4b4b4, Tff7b72val Te6edf3onChangeTb4b4b4: Tb4b4b4(Tffa657BooleanTb4b4b4) Tff7b72-Tff7b72> Tffa657Unit Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4)

Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffCompositionLocalAllowlistTa5d6ff"Tb4b4b4)
Tff7b72val Te6edf3LocalEventThemeToggle Tff7b72= Te6edf3compositionLocalOf Tb4b4b4{ Te6edf3EventThemeToggleTb4b4b4(Tb4b4b4) Tb4b4b4}

Tff7b72private Tff7b72fun Te6edf3TextStyleTb4b4b4.Td2a8fffamilyTb4b4b4(Te6edf3familyTb4b4b4: Te6edf3FontFamily?Tb4b4b4)Tb4b4b4: Te6edf3TextStyle Tff7b72= Tff7b72if Tb4b4b4(Te6edf3family Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Te6edf3copyTb4b4b4(Te6edf3fontFamily Tff7b72= Te6edf3familyTb4b4b4) Tff7b72else Tff7b72this

T8b949e/**
* Applies [fonts] across the full M3 typescale: [EventFonts.heading] to display/headline/title styles,
* [EventFonts.body] to body/label styles. A `null` component leaves those styles unchanged.
*/
Tff7b72fun Te6edf3TypographyTb4b4b4.Td2a8ffwithEventFontsTb4b4b4(Te6edf3fontsTb4b4b4: Te6edf3EventFontsTb4b4b4)Tb4b4b4: Te6edf3Typography Tb4b4b4{
Tff7b72val Te6edf3h Tff7b72= Te6edf3fontsTb4b4b4.Te6edf3heading
Tff7b72val Te6edf3b Tff7b72= Te6edf3fontsTb4b4b4.Te6edf3body
Tff7b72return Te6edf3copyTb4b4b4(
Te6edf3displayLarge Tff7b72= Te6edf3displayLargeTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3hTb4b4b4)Tb4b4b4,
Te6edf3displayMedium Tff7b72= Te6edf3displayMediumTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3hTb4b4b4)Tb4b4b4,
Te6edf3displaySmall Tff7b72= Te6edf3displaySmallTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3hTb4b4b4)Tb4b4b4,
Te6edf3headlineLarge Tff7b72= Te6edf3headlineLargeTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3hTb4b4b4)Tb4b4b4,
Te6edf3headlineMedium Tff7b72= Te6edf3headlineMediumTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3hTb4b4b4)Tb4b4b4,
Te6edf3headlineSmall Tff7b72= Te6edf3headlineSmallTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3hTb4b4b4)Tb4b4b4,
Te6edf3titleLarge Tff7b72= Te6edf3titleLargeTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3hTb4b4b4)Tb4b4b4,
Te6edf3titleMedium Tff7b72= Te6edf3titleMediumTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3hTb4b4b4)Tb4b4b4,
Te6edf3titleSmall Tff7b72= Te6edf3titleSmallTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3hTb4b4b4)Tb4b4b4,
Te6edf3bodyLarge Tff7b72= Te6edf3bodyLargeTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3bTb4b4b4)Tb4b4b4,
Te6edf3bodyMedium Tff7b72= Te6edf3bodyMediumTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3bTb4b4b4)Tb4b4b4,
Te6edf3bodySmall Tff7b72= Te6edf3bodySmallTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3bTb4b4b4)Tb4b4b4,
Te6edf3labelLarge Tff7b72= Te6edf3labelLargeTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3bTb4b4b4)Tb4b4b4,
Te6edf3labelMedium Tff7b72= Te6edf3labelMediumTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3bTb4b4b4)Tb4b4b4,
Te6edf3labelSmall Tff7b72= Te6edf3labelSmallTb4b4b4.Te6edf3familyTb4b4b4(Te6edf3bTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.05s